﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Box.BL;
using Box.Entities;
using Microsoft.Practices.Unity;

namespace Box.Cliente.Ventas
{
    public partial class frmImpresion : System.Web.UI.Page
    {
        [Dependency]
        public IProductoBL productoService { get; set; }

        [Dependency]
        public IVentaBL ventaService { get; set; }
        [Dependency]
        public IClienteBL clienteService { get; set; }
        [Dependency]
        public ITipoDocumentoBL tipoDocService { get; set; }
        
        private const string KEYVENTA = "venta";
        protected void Page_Load(object sender, EventArgs e)
        {
            Conversion convertir= new Conversion();
            
            var opc = Request.QueryString["opc"];
            var idPedido = Request.QueryString["id"];
            if (!Page.IsPostBack)
            {
                if (opc != null && opc == "print" && idPedido != null)
                {
                    var venta = ventaService
                        .GetFromVentasById(Int32.Parse(idPedido.ToString()));

                    var idDocumento = venta.IdTipoDocumento;
                    
                    lblCantidadTotal.Text = 
                        convertir.enletras(venta.Total.ToString())
                        .ToLower();

                    var _docTipo = tipoDocService.GetFromTipoDocumentoById(idDocumento);
                    var total = venta.Total;


                    if (_docTipo.NombreTipoDocumento == "FACTURA" || _docTipo.NombreTipoDocumento == "TICKET")
                    {
                       var igv = total * _docTipo.IGV;

                           lblIgv.Text = igv.ToString();
                    }
                    if (_docTipo.NombreTipoDocumento == "BOLETA")
                    {
                        _lblIgv.Visible = false;
                        lblIgv.Visible = false;
                    }
                     

                    


                    BindingVenta(venta);

                    ViewState["opc"] = opc;
                }
            }
        }
        private void BindingVenta(Venta venta)
        {

            txtId.Text = venta.Id.ToString();
            lblFecha.Text = venta.Fecha.ToShortDateString();
            //txtCorrelativo.Text = venta.Correlativo.ToString();
            if (venta.Cliente != null)
            {
                lblRuc.Text = venta.Cliente.RucCliente;
                lblCliente.Text = venta.Cliente.NombreCliente;
                lblDireccion.Text = venta.Cliente.DireccionCliente;
            }

            venta.Total = venta.DetalleVenta.Sum(dp => dp.Monto);


            lvDetalleVenta.DataSource = venta.DetalleVenta;
            lvDetalleVenta.DataBind();

            var lblTotal = lvDetalleVenta.FindControl("lblTotal") as Label;


            if (lblTotal != null)
                lblTotal.Text = venta.Total.ToString();
            //actualizo el cache

            Cache.Insert(KEYVENTA, venta);
        }
    }
}